import org.junit.Test;


import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;


/*
 * @date 2019/8/19 16:12
 * @param
 * @return
 * @describe
 * 功能需求：1、首先邮箱和授权码  2、获取 javax.mail.Session 对象  3、设置
 * 代码需求：
*/


/**
 * @ClassName QEmail
 * @Description TODO
 * @Date 2019/8/17 10:06
 * @Version 1.0
 **/
public class QEmail {

    @Test
    public void basicEmailSend(){
        // 收件人电子邮箱
        String to = "*****@qq.com";
        // 发件人电子邮箱
        final String from = "*****@qq.com";
        // 授权码
        final String password ="********************";

        // 指定发送邮件的主机为 smtp.qq.com
        String host = "smtp.qq.com";  //QQ 邮件服务器  每个平台的不一样 136 就是 smtp.136.com
        // 获取系统属性
        Properties properties = System.getProperties();
        // 设置邮件服务器
        properties.setProperty("mail.smtp.host", host);
        properties.put("mail.smtp.auth", "true");  //auth 授权


      /* //对邮箱进行加密  可以不带
        MailSSLSocketFactory sf = null;
        try {
            sf = new MailSSLSocketFactory();//socket 接口  Factory工厂
        } catch (GeneralSecurityException e) {
            e.printStackTrace();
        }
        sf.setTrustAllHosts(true);
        properties.put("mail.smtp.ssl.enable", "true");//enable 开启
        properties.put("mail.smtp.ssl.socketFactory", sf);
       */

        // 获取默认session对象  会话
        Session session = Session.getDefaultInstance(properties,new Authenticator(){
            public PasswordAuthentication getPasswordAuthentication()
            {
                PasswordAuthentication passwordAuthentication = new PasswordAuthentication(from,password);
                return passwordAuthentication; //发件人邮件用户名、授权码
            }
        });

        session.setDebug(true);//开启日志打印
        try{

            // 创建默认的 MimeMessage 对象
            MimeMessage message = new MimeMessage(session);

            //四个属性 发件人 收件人 标题 内容
            // Set From: 头部头字段 发件人
            message.setFrom(new InternetAddress(from));
            // Set To: 头部头字段 收件人
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            //Set Subject: 标题
            message.setSubject("今天有点开心！");
            //设置消息体
            message.setText("你今天开心吗?","GBK");


            // 发送消息
            Transport.send(message);
            System.out.println("Sent message successfully....from runoob.com");
        }catch (MessagingException mex) {
            mex.printStackTrace();
        }
    }


}
